Create the icon pixmap with the system visual
authorOwen W. Taylor <otaylor@fishsoup.net>
Sun, 14 Nov 2010 14:38:32 +0000 (09:38 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 19 Nov 2010 14:29:43 +0000 (09:29 -0500)
Since what we are doing is turning an icon with alpha into a
no-alpha icon + mask for legacy window managers, it makes more sense
to use the system visual than the window's visual, which might
be ARGB.

https://bugzilla.gnome.org/show_bug.cgi?id=634821

gdk/x11/gdkwindow-x11.c

index 88d85101aeaaafc471946aba7a22235b3612ce73..b369e2c63e209aa0201ed414988077014109fb6c 100644 (file)
@@ -271,16 +271,17 @@ _gdk_x11_window_create_bitmap_surface (GdkWindow *window,
   return surface;
 }
 
+/* Create a surface backed with a pixmap without alpha on the same screen as window */
 static cairo_surface_t *
 gdk_x11_window_create_pixmap_surface (GdkWindow *window,
                                       int        width,
                                       int        height)
 {
+  GdkScreen *screen = gdk_window_get_screen (window);
+  GdkVisual *visual = gdk_screen_get_system_visual (screen);
   cairo_surface_t *surface;
   Pixmap pixmap;
-  GdkVisual *visual;
 
-  visual = gdk_window_get_visual (window);
   pixmap = XCreatePixmap (GDK_WINDOW_XDISPLAY (window),
                           GDK_WINDOW_XID (window),
                           width, height,